//
//  48.不用加减乘除做加法.swift
//  数据结构与算法
//
//  Created by ZERO on 2021/5/29.
//

import Foundation
/*
 题目：写一个函数，求两个整数之和，要求在函数体内不得使用+、-、*、/四则运算符号。
 思路：计算a和b的无进位和，和进位
      如果进位不为0，则说明a+b的结果等于无进位和+进位，此时，把无进位和作为a，进位作为b，继续计算
      如果进位等于0， 说明此时a+b的结果就等于无进位和，返回无进位和即可。
 */
func offer_48() {
    print(Solution().Add(1, 5))
}

fileprivate class Solution {
    func Add(_ num1: Int, _ num2: Int) -> Int {
        var a = num1
        var b = num2
        while b != 0 {
            // 进位
            let c = UInt(a & b) << 1
            a ^= b
            b = Int(c)
        }
        return a
    }
}

